namespace _1016
{
    public static class Demo
    {
        public static void TestPrint1()
        {
            Console.Write("请输入三个整数 x y z（空格分隔）：");
            int[] a = Console.ReadLine()!
                .Split(new[]{' ','\t'}, StringSplitOptions.RemoveEmptyEntries)
                .Select(int.Parse)
                .ToArray();
            Array.Sort(a);
            Console.WriteLine($"由小到大排序：{a[0]} {a[1]} {a[2]}");
        }

        public static void TestPrint2()
        {
            int sum = 0;
            for (int i = 1; i <= 100; i++)
            {
                if (i % 7 != 0 && !i.ToString().Contains('7'))
                {
                    Console.Write(i + " ");
                    sum += i;
                }
            }
            Console.WriteLine($"\n总和 = {sum}");
        }

        public static void TestPrint3()
        {
            for (int i = 1; i <= 9; i++)
            {
                for (int j = 1; j <= i; j++)
                    Console.Write($"{j}*{i}={i * j,-2} ");
                Console.WriteLine();
            }
        }

        public static void TestPrint4()
        {
            for (int n = 2; n <= 1000; n++)
            {
                int sum = 1;                 // 1 永远是真因子
                for (int i = 2; i * i <= n; i++)
                {
                    if (n % i == 0)
                    {
                        sum += i;            // 加入较小因子
                        if (i != n / i)      // 避免平方数重复加
                            sum += n / i;
                    }
                }
                if (sum == n) Console.WriteLine(n);
            }
        }

        // 5. 键盘录入正整数，求位数+逆序打印
        public static void TestPrint5()
        {
            Console.Write("请输入一个正整数：");
            string input = Console.ReadLine()!;
            // 简单容错：确保输入是正整数
            if (!int.TryParse(input, out int num) || num <= 0)
            {
                Console.WriteLine("输入无效，请输入正整数！");
                return;
            }
            // 1. 计算位数
            Console.WriteLine($"该正整数是 {input.Length} 位数");
            // 2. 逆序打印（字符串反转实现，避免数字末尾0丢失）
            char[] charArr = input.ToCharArray();
            Array.Reverse(charArr);
            Console.WriteLine($"该数逆序打印为：{new string(charArr)}");
        }

        // 6. 根据输入行数打印菱形（自动处理偶数为奇数，保证对称）
        public static void TestPrint6()
        {
            Console.Write("请输入菱形的行数（建议奇数）：");
            if (!int.TryParse(Console.ReadLine(), out int rows) || rows <= 0)
            {
                Console.WriteLine("输入无效，请输入正整数！");
                return;
            }
            // 处理偶数：转为相邻奇数，避免菱形不对称
            if (rows % 2 == 0)
            {
                rows++;
                Console.WriteLine($"已自动调整为奇数行数：{rows}");
            }

            int half = rows / 2; // 上半部分（含中间行）的行数
            // 打印上半部分（含中间行）
            for (int i = 0; i <= half; i++)
            {
                // 打印空格（逐行减少）
                Console.Write(new string(' ', half - i));
                // 打印星号（逐行增加，2*i+1个）
                Console.WriteLine(new string('*', 2 * i + 1));
            }
            // 打印下半部分（不含中间行）
            for (int i = half - 1; i >= 0; i--)
            {
                Console.Write(new string(' ', half - i));
                Console.WriteLine(new string('*', 2 * i + 1));
            }
        }
    }
}